package com.hanlin.day05;

/**
 * 描述：使用位运算实现加减乘除
 *
 * @author:hl.yuan
 * @date:2022-07-11
 */
public class Algorithm {
    /**
     * 位运算 加法 可以拆分成 (a^b) + ((a&b)<<1)
     *
     * ^相同为0，不同为1
     * &同时为1才为1，否则为0
     *
     * @param a
     * @param b
     * @return
     */
    public static int add(int a, int b) {
        int sum = a;
        while (b != 0) {
            // 无进位相加信息
            sum = a ^ b;
            // 进位相加信息
            b = (a & b) << 1;
            a = sum;
        }
        return sum;
    }

    public static void main(String[] args) {
        // 5 + 6
        // 0101 ^ 0110  = 0011    ^相同为0，不同为1
        System.out.println(5^6);
        System.out.println((5&6)<<1);
        System.out.println(Integer.toBinaryString(3));
    }
}
